package com.household.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.household.domain.ResponseResult;
import com.household.domain.entity.User;
import com.household.domain.enums.SexEnum;
import com.household.domain.vo.AdminUserVO;
import com.household.domain.vo.BootstrapTableVO;
import com.household.domain.vo.UserInfoVO;

import javax.servlet.http.HttpSession;
import java.util.Map;


/**
 * Created By wanzhen
 * 2023. 2023/3/25. 11:42
 */
public interface UserService extends IService<User> {

    ResponseResult registryByUsername(String username, String password);

    boolean checkExistByUsername(String username);

    /**
     * 获取 frontName
     */
    String getFrontName(String userId);

    String getFrontName(User user);

    /**
     * 管理员仪表盘展示数据
     */
    Map<String, Long> getAdminDashboardData();

    /**
     * 获取 AdminUserInfoVO 列表
     */
    BootstrapTableVO<AdminUserVO> pageAdminUserInfoVO(Page<User> page, QueryWrapper<User> wrapper);

    /**
     * 获取用户信息
     */
    UserInfoVO getUserInfo(String userId);
    /**
     * 根据手机号查找用户
     */
    User getByTel(String tel);

    /**
     * 修改密码
     */
    ResponseResult resetPassword(String userId, String oldPassword, String newPassword);

    /**
     * 设置/修改手机号码
     */
    ResponseResult setTel(User user, String tel, String code, HttpSession session);
    /**
     * 根据手机号判断用户是否存在
     */
    boolean checkExistByTel(String mobile);
    /**
     * 设置/修改性别
     */
    ResponseResult setSex(User sysUser, SexEnum sexEnum);
}
